For many years, research and development in the area of software engineering has implemented different concepts for facilitating software production. One such concept regards graphical user interface (GUI) builders, also known as GUI designers. Generally, a GUI builder is a software tool for programming computer applications that simplifies the creation of GUIs by allowing the developers to arrange user interface (UI) controls using visual editors, including drag-and-drop editors, “what-you-see-is-what-you-get” (WYSIWYG) editors, etc. GUI builders typically skip the manual coding of each UI control parameters, and provide visual feedback before the code is executed.
Usually, a GUI is a part of an event-driven software application, where the flow of the execution of a computer program is determined by events, e.g., user actions, messages, input from other applications, etc. When a particular event happens, it may trigger changes in the values of a number of variables or data elements causing a dataflow. The dataflow of a computer application determines that when a value of a data element changes, values of one or more related data elements change as well. Often, the UI controls of GUIs are based on dataflows. For example, when a UI control receives a user action, it may trigger changes in series of values of related data elements, according to an underlying dataflow. Some of the UI controls or elements of a GUI themselves may correspond to data elements of a dataflow, and may show one or more current values of the data elements. A growing number of vendors of GUI builders supplement the UI design with dataflow design capabilities. Such combination of GUI design tools and dataflow design tools can be found in Microsoft Access™; NetBeans™ integrated development environment (IDE); Yahoo Pipes™; etc.
Those software development tools that allow switching between different design tools (e.g., UI design mode, dataflow design mode, source code editor mode, etc.) help the creation of software applications in various ways. For example, one application developer may create the UI design and the dataflow design of a computer application in parallel within the same application builder tool by switching between different design modes. This approach increases productivity and minimizes the risk of errors in the integration between application functionality, dataflow, and GUI. However, there are some drawbacks in the simultaneous work with different software design modes. For example, the software developers may be overloaded with information, especially when working on complex applications. Other drawbacks may be caused by inefficient UI controls interaction during development, poor layout realism (caused by the attempts to display all layout and data aspects at once), a tendency of cluttering of the UI controls or of the data elements during the development process that needs to be regularly resolved, etc.